package com.hqq.sort.insert;

import com.hqq.sort.Sort;

/**
 * InsertionSort
 * 插入排序
 * 原理:
 * 把元素插入已排序的的元素组中的适当位置
 * 特点:
 * 排序所需的时间取决于初始元素的顺序
 * 适用场景:
 * 部分有序或者小规模数组
 * Created by heqianqian on 2017/8/3.
 */
public class InsertionSort extends Sort {

    public static void sort(Comparable[] a) {
        for (int i = 1; i < a.length; i++) {
            for (int j = i; j > 0 && less(a[j], a[j - 1]); j--) {
                exchange(a, j, j - 1);
            }
        }
    }

}
